package com.swanclouds.redfish.account.domain.Oem.BMC.user;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.swanclouds.model.common.redfish.Oem;

/**
 * @author 张立强
 * @version jdk1.8.0
 * "Oem":{
 *      "BMC":{
 *          "PasswordComplexityEnabled": password_complexity_enabled,
 *          "PasswordValidityDays": password_validity_days，
 *          "PasswordValidityRemindDays": password_validity_remind_days
 *      }
 *  }
 *  PasswordComplexityEnabled: 是否开启密码复杂度。当未下发该参数时，默认为false，不进行密码复杂度校验。true，开启，进行密码校验false，不开启，不进行密码校验
 *  PasswordValidityDays: 密码有效期，表示从用户创建开始，密码有效的天数。当未下发该参数，表示禁用密码有效期，此时密码一直有效
 *  PasswordValidityRemindDays: 密码有效期提醒天数
 */
@JsonRootName("Oem")
public class BMCCreateAccountOem implements Oem {

    @JsonProperty("BMC")
    private BMCCreateAccount bmc;

    @JsonRootName("BMC")
    public static class BMCCreateAccount {

        @JsonProperty("PasswordComplexityEnabled")
        private Boolean complexityEnabled;

        @JsonProperty("PasswordValidityDays")
        private Integer validityDays;

        @JsonProperty("PasswordValidityRemindDays")
        private Integer validityRemindDays;


        private BMCCreateAccount() {}

        public static BMCCreateAccount create() {
            return new BMCCreateAccount();
        }

        public BMCCreateAccount complexityEnabled(Boolean complexityEnabled) {
            this.complexityEnabled = complexityEnabled;
            return this;
        }

        public BMCCreateAccount validityDays(Integer validityDays) {
            this.validityDays = validityDays;
            return this;
        }

        public BMCCreateAccount validityRemindDays(Integer validityRemindDays) {
            this.validityRemindDays = validityRemindDays;
            return this;
        }

    }


    private BMCCreateAccountOem() {}

    public static BMCCreateAccountOem create() {
        return new BMCCreateAccountOem();
    }

    public BMCCreateAccountOem name(BMCCreateAccount name) {
        this.bmc = name;
        return this;
    }

}
